import { getUrlQuery } from './common'
import { useUserStore } from './stores'
import { traceCustomEvent } from '@web-tracing/vue3'

/*
点击事件触发
首页
  每个板块（我的卡券，brand，brandGroup，瀑布流，周周选，月月领，支付宝五选三等）
  天天免费领弹窗(是否弹窗 是否领取 是否关闭 领取信息)
  抽奖(暂时不加)
  message: home-[type]
    type： rightsList 我的卡券
           banner 轮播图（品牌）
           brandGroup 品牌组
           monthActive  月月领
              renewReceive 支付宝五选三
           waterfall  瀑布流
           weekActive  周周选
           timeLimitActive plus免费限时购
           popupEveryDayFree 天天免费领弹窗
           porcelainTileAreaFlat 瓷片区
  title: '首页'
  eventName: '点击我的卡券'

品牌页面
  message: brand
  title: '品牌页'
  eventName: '按钮点击'

品牌页面 （支付宝五选三）
  message:  brand
  title: '支付宝五选三'
  eventName: '按钮点击'

品牌组页面
  message: brand
  title: '品牌组页'
  eventName: '按钮点击'

权益详情页(正常、活动、卡包)
  message: rightsDetail
  title: '权益详情页'
  eventName: '按钮点击'

我的卡券
  message: rightsList
  title: '我的卡券页'
  eventName: '卡片点击 | 按钮点击'
* */

interface Options {
  message: string // eventCode，页面标识
  title: string // 页面名称
  eventName: string // eventName，具体描述
  categoryId?: string // 瀑布流id 供应链去除传 viewModuleId
  rightsId?: string // 权益id
  rightsCode?: string // 权益code
  rightType?: string // 权益类型
  activityId?: any // m选n活动id，如配置活动，权益上会返回 供应链去除传 viewModuleId
  eventId?: string // 限时活动-对应plus免费限时购、天天免费领弹框 活动Id
  eventCyclicId?: string // 限时活动(eventCyclicCode)、天天免费领弹框 场次Id
  brandId?: any // 品牌id
  viewModuleId?: any // viewModuleId
  packId?: number // 卡包id
}

// 埋点
export function traceHandle(options: any) {
  try {
    let { userId, memberId, memberCode, channelId, channelCode }: any = getUrlQuery()
    let userInfo = useUserStore()?.userInfo || {}
    userId = userId || userInfo.userId
    memberId = memberId || userInfo.memberId

    const {
      message,
      title,
      eventName,
      categoryId,
      rightsId,
      rightsCode,
      rightType,
      activityId,
      eventId,
      eventCyclicId,
      brandId,
      viewModuleId,
      packId,
      ...rest
    } = options

    const origin = location?.origin
    const state = history?.state?.back
    let referer = undefined
    if (origin && state) referer = `${origin}${state}`

    traceCustomEvent({
      referer,
      title,
      message,
      params: {
        eventName,
        userId,
        memberId,
        memberCode,
        channelId,
        channelCode,
        categoryId,
        rightsId,
        rightsCode,
        rightType,
        t_activity: activityId,
        event_id: eventId,
        event_cyclic_id: eventCyclicId,
        t_brand: brandId,
        viewModuleId,
        packId,
        ...rest
      }
    })
  } catch (e) {
    console.log('埋点错误', e)
  }
}
